home *** CD-ROM | disk | FTP | other *** search
/ All for Cell Phones: Sony Ericsson / Sony-Ericsson 2004.iso / Java / Excel / Sheet.jar / sheet / Cell$Calculate.class (.txt) < prev    next >
Encoding:
Java Class File  |  2001-09-03  |  3.5 KB  |  120 lines

  1. package sheet;
  2.  
  3. import javax.microedition.lcdui.Alert;
  4. import javax.microedition.lcdui.AlertType;
  5. import javax.microedition.lcdui.Display;
  6. import javax.microedition.lcdui.Displayable;
  7. import javax.microedition.lcdui.Image;
  8.  
  9. class Cell$Calculate implements Calculator {
  10.    private Cell$Calculate() {
  11.    }
  12.  
  13.    public void showHelp(Displayable var1, Display var2) {
  14.       Alert var3 = new Alert("Formula help", "To enter a formula, start with '=' sign.\nCell reference: A1/a1..Z99/z99\nMath operators: +, -, *, /, ()\nForce textual value: ', or embrace with \"\"\nBuilt-in functions (case-insensitive):\n  abs(x)\n  sum(a, b, ...)\n  str(n)->string\n  num(s)->number", (Image)null, (AlertType)null);
  15.       var3.setTimeout(-2);
  16.       var2.setCurrent(var3, var1);
  17.    }
  18.  
  19.    private Operand checkOperand(Operand var1) throws IllegalArgumentException {
  20.       if (Operand.isName(var1)) {
  21.          Cell var2 = Cell.access$000().getByName(Operand.getName(var1));
  22.          if (var2 != null) {
  23.             if (Cell.access$100(var2) != null) {
  24.                throw new IllegalArgumentException("'" + Operand.getName(var1) + "' doesn't have a value");
  25.             }
  26.  
  27.             if (!Cell.access$200(var2)) {
  28.                throw new IllegalArgumentException();
  29.             }
  30.  
  31.             var1 = Cell.access$300(var2);
  32.          } else {
  33.             var1 = null;
  34.          }
  35.       }
  36.  
  37.       return var1;
  38.    }
  39.  
  40.    public Operand oper(short var1, Operand var2, Operand var3) throws IllegalArgumentException {
  41.       Operand var4 = this.checkOperand(var2);
  42.       Operand var5 = this.checkOperand(var3);
  43.       Operand var6;
  44.       switch (var1) {
  45.          case 1:
  46.             var6 = new Operand(-Operand.getNumber(var4));
  47.             break;
  48.          case 2:
  49.             if (Operand.isNumber(var4) && Operand.isNumber(var5)) {
  50.                var6 = new Operand(Operand.getNumber(var4) + Operand.getNumber(var5));
  51.             } else {
  52.                var6 = new Operand(Operand.getText(var4) + Operand.getText(var5), false);
  53.             }
  54.             break;
  55.          case 3:
  56.             var6 = new Operand(Operand.getNumber(var4) - Operand.getNumber(var5));
  57.             break;
  58.          case 4:
  59.             var6 = new Operand(Operand.getNumber(var4) * Operand.getNumber(var5));
  60.             break;
  61.          case 5:
  62.             var6 = new Operand(Operand.getNumber(var4) / Operand.getNumber(var5));
  63.             break;
  64.          default:
  65.             var6 = var4;
  66.       }
  67.  
  68.       return var6;
  69.    }
  70.  
  71.    public Operand call(String var1, Operand[] var2) throws IllegalArgumentException {
  72.       String var3 = var1.toLowerCase();
  73.       StringBuffer var4 = new StringBuffer("()");
  74.       if (var3.equals("abs")) {
  75.          if (var2.length == 1) {
  76.             return new Operand(Math.abs(Operand.getNumber(this.checkOperand(var2[0]))));
  77.          }
  78.  
  79.          var4.append(" has 1 argument");
  80.       } else if (var3.equals("str")) {
  81.          if (var2.length == 1) {
  82.             return new Operand(Operand.getText(this.checkOperand(var2[0])), false);
  83.          }
  84.  
  85.          var4.append(" has 1 argument");
  86.       } else if (var3.equals("num")) {
  87.          if (var2.length == 1) {
  88.             Operand var5 = new Operand(Operand.getText(this.checkOperand(var2[0])), true);
  89.             if (Operand.isNumber(var5)) {
  90.                return var5;
  91.             }
  92.  
  93.             var4.append(": '");
  94.             var4.append(var5);
  95.             var4.append("' is not a number");
  96.          } else {
  97.             var4.append(" has 1 argument");
  98.          }
  99.       } else {
  100.          if (var3.equals("sum")) {
  101.             int var7 = 0;
  102.  
  103.             for(int var6 = 0; var6 < var2.length; ++var6) {
  104.                var7 += Operand.getNumber(this.checkOperand(var2[var6]));
  105.             }
  106.  
  107.             return new Operand(var7);
  108.          }
  109.  
  110.          var4.append(" doesn't exist");
  111.       }
  112.  
  113.       throw new IllegalArgumentException(var1 + var4.toString());
  114.    }
  115.  
  116.    Cell$Calculate(Cell.1 var1) {
  117.       this();
  118.    }
  119. }
  120.